#pragma once

#include "ParticleDataWeightCalculator.h"
#include "ParticleVehicleData.h"
#include "ObservationLikelihoodEvaluator.h"
#include "ObservationImageLandmarks.h"

#include "LandmarkMap.h"

#include <fvision/Camera1D.h>

using namespace fvision;

typedef CParticleDataWeightCalculator<CParticleVehicleData, CObservationImageLandmarks> VehicleWeightCalculator;

class CImageLandmarksVehicleWeightCalculator : public VehicleWeightCalculator {
public:
	CImageLandmarksVehicleWeightCalculator(
		LandmarkMap*                      pMap, 
		Camera1DInternal*                 pCamInternal,
		CObservationLikelihoodEvaluator*  pObservationLikelihoodEvaluator
		);
	~CImageLandmarksVehicleWeightCalculator(void);

public:
	double compute(CParticleVehicleData* particle, CObservationImageLandmarks* pObservation);

private:
	LandmarkMap* pMap;
	Camera1DInternal* pCamInternal;
	CObservationLikelihoodEvaluator* pObservationLikelihoodEvaluator;
};
